home *** CD-ROM | disk | FTP | other *** search
/ Aminet 35 / Aminet 35 (2000)(Schatztruhe)[!][Feb 2000].iso / Aminet / dev / src / stefanb_src.lha / ResetHandler / MyResetHandler.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-08-24  |  1.4 KB  |  66 lines

  1. /*
  2.  * MyResetHandler.c  V1.0
  3.  *
  4.  * Main program
  5.  *
  6.  * (c) 1991-93 Stefan Becker
  7.  *
  8.  */
  9. #include "ResetHandler.h"
  10.  
  11. /* Data */
  12. static const char Version[]="$VER: MyResetHandler V1.0 (" __COMMODORE_DATE__
  13.                             ")";
  14. static const char Name[]="MyResetHandler V1.0, © 1991-93 Stefan Becker";
  15. struct Interrupt MyInt;
  16.  
  17. /* Reset Handler code */
  18. __geta4 void ResetHandler(void)
  19. {
  20.  ColdReboot();
  21. }
  22.  
  23. /* Main program */
  24. int _main()
  25. {
  26.  struct MsgPort *kp;
  27.  
  28.  /* Create message port for keyboard.device */
  29.  if (kp=CreateMsgPort()) {
  30.   struct IOStdReq *kior;
  31.  
  32.   /* Create I/O request for keyboard.device */
  33.   if (kior=CreateIORequest(kp,sizeof(struct IOStdReq))) {
  34.  
  35.    /* Open keyboard.device */
  36.    if (!OpenDevice("keyboard.device",0,(struct IORequest *) kior,0)) {
  37.  
  38.     /* Set up data for the reset handler */
  39.     MyInt.is_Node.ln_Name=Name;
  40.     MyInt.is_Node.ln_Pri=32;    /* Highest priority */
  41.     MyInt.is_Code=ResetHandler;
  42.  
  43.     /* Add reset handler */
  44.     kior->io_Data=&MyInt;
  45.     kior->io_Command=KBD_ADDRESETHANDLER;
  46.     DoIO((struct IORequest *) kior);
  47.  
  48.     /* Wait until break signal */
  49.     Wait(SIGBREAKF_CTRL_C);
  50.  
  51.     /* Remove reset handler */
  52.     kior->io_Data=&MyInt;
  53.     kior->io_Command=KBD_REMRESETHANDLER;
  54.     DoIO((struct IORequest *) kior);
  55.  
  56.     CloseDevice((struct IORequest *) kior);
  57.    }
  58.    DeleteIORequest(kior);
  59.   }
  60.   DeleteMsgPort(kp);
  61.  }
  62.  
  63.  /* All OK */
  64.  return(0);
  65. }
  66.